<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Notices</title>
</head><body>/* Init function */<br/>
void setup(){<br/>
/* Init pin mode*/<ul><li style="list-style-type: none">pinMode(2, OUTPUT);</li>
<li style="list-style-type: none">pinMode(3, INPUT);</li>
<li style="list-style-type: none">/* Init serial */</li>
<li style="list-style-type: none">Serial.begin(115200);</li>
</ul>
}<br/>
<br/>
void loop() {<ul><li style="list-style-type: none">/* Set IO */</li>
<li style="list-style-type: none">digitalWrite(2, HIGH);</li>
<li style="list-style-type: none">digitalWrite(2, LOW);</li>
<li style="list-style-type: none">/* Set PWM */</li>
<li style="list-style-type: none">analogWrite(3, 100); /*pwm 0~255 = 0%~100% */</li>
<li style="list-style-type: none">/* Read Serial */</li>
</ul>
}<br/>
时钟输出 | Arduino输出Pin编号 | 芯片Pin | Pin name<br/>
OC0A 6 12 PD6<br/>
OC0B 5 11 PD5<br/>
OC1A 9 15 PB1<br/>
OC1B 10 16 PB2<br/>
OC2A 11 17 PB3<br/>
OC2B 3 5 PD3 <br/>
Timer0默认是快速PWM，而Timer1和Timer2默认是相位修正PWM。具体的设置可以查看Arduino源代码中writing.c的设置。<br/>
需要特别特别注意的是，Arduino的开发系统中，millis()和delay()这两个函数是基于Timer0时钟的，所以如果你修改了 Timer0的时钟周期，这两个函数也会受到影响。直接的效果就是delay(1000)不再是标准的1秒，也许会变成1/64秒，这个需要特别注意。<br/>
在程序中使用analogWrite(pin, duty_cycle)函数的时候，就启动了PWM模式；当调用digitalWrite()函数时则取消了PWM模式。请参考wiring_analog.c和 wiring_digital.c文件。<br/>
<br/>
http://www.atmel.com/devices/ATMEGA328P.aspx?tab=documents<br/>
<br/>
<br/>
</body></html>